package algo3.algothief.modelo;

public class SeLlegoAlUltimoPaisConOrdenDeArresto extends SeLlegoAlUltimoPais {

	protected static String stringCaracteristico = "SeLlegoAlUltimoPaisConOrdenDeArresto";
	
//-------------------------------------------------------------------------------------
	
	protected SeLlegoAlUltimoPaisConOrdenDeArresto(Juego juego) {
		super(juego);
	}
	
//-------------------------------------------------------------------------------------	
	
	protected String verStringCaracteristico() {
		return stringCaracteristico;
	}
	
//-------------------------------------------------------------------------------------	
	
	public EstadoDelJuego comprobarPosibleCambioDeEstadoAlVisitarUnLugar(Caso caso, CuartelGeneral cuartel, LugarDePais lugar) {
		EsconditeDeLadron escondite = (EsconditeDeLadron) lugar;
		boolean seEscondioEnEsteLugar = escondite.verSiSeEscondioElLadron();
		
		if (seEscondioEnEsteLugar) {
			DescripcionDeLadron descripcionDelLadron = caso.verDescripcionDelLadron();
			boolean elSospechosoEsElLadron = cuartel.verSiConcuerdaConLaDescripcionDelSospechoso(descripcionDelLadron);
			
			if (elSospechosoEsElLadron) {
				return new SeAtrapoAlLadron(super.juego);
			}
			
			return new SeEscapoElLadronPorNoTenerOrdenDeArresto(super.juego);
		}
		
		return this;
	}
	
	public EstadoDelJuego modificarEstadoACausaDeSalirDelUltimoPais() {
		return new JuegoEnCursoConOrdenDeArresto(super.juego);
	}
}
